package com.ryder.petmatediarybackend.module.shop.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ryder.petmatediarybackend.module.shop.dto.CreateShopDTO;
import com.ryder.petmatediarybackend.module.shop.dto.UpdateShopDTO;
import com.ryder.petmatediarybackend.module.shop.entity.ShopInfo;
import com.ryder.petmatediarybackend.module.shop.vo.ShopInfoVO;

import java.util.List;

/**
 * 描述: 店铺基础信息表（每个用户仅拥有一个店铺）(ShopInfo)表服务接口
 * 
 * @author Ryder
 * @version 1.0
 * @since 1.0
 * 更新日期: 2025-10-31
 */
public interface ShopInfoService extends IService<ShopInfo> {

    /**
     * 创建店铺
     */
    ShopInfoVO createShop(Long userId, CreateShopDTO dto);

    /**
     * 获取用户的店铺信息
     */
    ShopInfoVO getMyShop(Long userId);

    /**
     * 更新店铺信息
     */
    ShopInfoVO updateShop(Long userId, UpdateShopDTO dto);

    /**
     * 删除店铺（逻辑删除）
     */
    void deleteShop(Long userId);

    /**
     * 检查用户是否已有店铺
     */
    boolean hasShop(Long userId);

    /**
     * 获取店铺信息（内部使用）
     */
    ShopInfo getShopByUserId(Long userId);

    /**
     * 获取附近的店铺列表
     */
    List<ShopInfoVO> getNearbyShops(Double longitude, Double latitude, Double radius);

    /**
     * 获取所有营业中的店铺
     */
    List<ShopInfoVO> getAllActiveShops();

    /**
     * 获取店铺详情
     */
    ShopInfoVO getShopDetail(Long shopId);
}
